/*
 数分为两种类型，整数和浮点数，整数是没有小数点和小数部分的数，整数有最大数和最小数，那就是整数类型做占据的内存所能表示的范围
 */

import Cocoa

print("The maximum Int value is \(Int.max)")
print("The minimum Int value is \(Int.min)")
print("The maximum value for a 32-bit integer is \(Int32.max)")
print("The minimum value for a 32-bit integer is \(Int32.min)")
print("The maximum value for a 8-bit integer is \(Int8.max)")
print("The minimum value for a 8-bit integer is \(Int8.min)")
print("The maximum value for a 8-bit unsigned integer is \(uint8.max)")
print("The minimum value for a 8-bit unsigned integer is \(uint8.min)")
/*
 有符号：
 最大：0后面全是1
 最小：原码全是1 反码1后面全是0 补码1后面全是0最后一位是1，所以最小值是补码再-1（8位数为例子，原码最小值：11111111（-127），反码：10000000，补码：10000001，补码还能-1：-128）
 无符号：
 最小：全是0
 最大：全是1
 */


//2.创建整数实例
let numberOfPages:Int = 10      //显示的声明
let numberOfChapters = 3        //编译器类型推断
let numberOfPeople:UInt = 40
let volumeAdjustment:Int32 = -1000

//let numberOfPeopleWrong:UInt = -1   //错误实例
//let volumeAdjustmentWrong:Int8 = 200    //错误实例



//3.整数操作符
print(10+20)
print(5*6)
print(11/3)
print(11%3)
let y:Int8 = 120
//let z = y+10    //运行报错，溢出,默认出发陷阱程序结束运行
let z = y&+10       //&+是溢出加操作符
print("120 &+ 10 is \(z)")   //127+1 = -128,-128+1=-127 。。。。


//4.转换整数类型
let a: Int16 = 200
let b: Int8 = 50
//let c: = a + b //类型报错
let c = a + Int16(b)


//5.浮点数
/*
1.浮点数在计算机中是以位数和指数的形式存储的
2.浮点数通常不精确，只是一个近似值D
3.浮点数通常有两种类型，Float和Double,其不影响最大值和最小值，而是影响精度，Swift中默认类型推断是Double
4.不要用浮点数做 == 判断
*/
let d1 = 1.1 //隐式Double声明
let d2: Double = 1.1
let f1:Float = 100.3

print(10.0 + 11.4)
print(11.0 / 3.0)
//print(11.0 % 3.0)

